package com.xuecheng.api.content;

import com.xuecheng.api.content.model.dto.CourseBaseDTO;
import com.xuecheng.api.content.model.dto.CoursePubDTO;
import com.xuecheng.api.content.model.qo.QueryCourseBaseModel;
import com.xuecheng.api.content.model.vo.CourseBaseVO;
import com.xuecheng.common.domain.page.PageRequestParams;
import com.xuecheng.common.domain.page.PageVO;
import com.xuecheng.common.domain.response.RestResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * <p></p>
 *
 * @Description:
 */
@Api(value = "课程基本信息api",tags = "课程基本信息api信息管理接口")
public interface CourseBaseApi {

    @ApiOperation("分页条件查询课程基本信息")
    PageVO queryCourseList(PageRequestParams params, QueryCourseBaseModel model);

    @ApiOperation("课程基础信息创建")
    CourseBaseDTO createCourseBase(CourseBaseVO vo);

    @ApiOperation("课程基础信息修改")
    CourseBaseDTO modifyCourseBase(CourseBaseVO vo);


    @ApiOperation("根据课程id查询课程数据")
    CourseBaseDTO getCourseBaseById(Long courseBaseId);

    @ApiOperation("教学机构提交课程")
    void commitCourseBase(Long courseId);

    @ApiOperation("根据Id删除课程信息")
    @ApiImplicitParam(name = "courseBaseId", value = "课程id值", required = true, paramType = "path")
    void removeCoursebase(Long courseBaseId);


    @ApiOperation("课程预览")
    Object preview(Long courseId,Long companyId);


    @ApiOperation("课程发布")
    void publish(Long courseBaseId);

    @ApiOperation("根据课程id查询课程数据")
    CoursePubDTO getCourseBaseByIdNoCompanyId(Long courseBaseId);

    //远程调用-课程内容管理服务-根据课程id查找coursePub信息

    RestResponse<CoursePubDTO> getByCourse4s(Long coursePubId);

}
